import CryptoJS from 'crypto-js';

// 如果 KEY 和 IV 是全局常量，请在这里定义
const DEFAULT_KEY = CryptoJS.enc.Utf8.parse('_aes_secret_key_'); // 默认密钥
const DEFAULT_IV = CryptoJS.enc.Utf8.parse('_aes_secret_iv__'); // 默认初始化向量 (IV)

export function Encrypt(word, keyStr = null, ivStr = null) {
  let key = DEFAULT_KEY;
  let iv = DEFAULT_IV;

  if (keyStr && ivStr) {
    key = CryptoJS.enc.Utf8.parse(keyStr);
    iv = CryptoJS.enc.Utf8.parse(ivStr);
  }

  const srcs = CryptoJS.enc.Utf8.parse(word);
  const encrypted = CryptoJS.AES.encrypt(srcs.toString(CryptoJS.enc.Utf8), key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.ZeroPadding
  });

  return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}



/**
 * AES 解密 ：字符串 key iv  返回base64
 *
 */
export function Decrypt(word, keyStr, ivStr) {
	let key = KEY
	let iv = IV

	if (keyStr) {
		key = CryptoJS.enc.Utf8.parse(keyStr);
		iv = CryptoJS.enc.Utf8.parse(ivStr);
	}

	let base64 = CryptoJS.enc.Base64.parse(word);
	let src = CryptoJS.enc.Base64.stringify(base64);

	var decrypt = CryptoJS.AES.decrypt(src, key, {
		iv: iv,
		mode: CryptoJS.mode.CBC,
		padding: CryptoJS.pad.ZeroPadding
	});

	var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
	return decryptedStr.toString();
}
